1. Field of the Invention
The present invention relates to computer systems, and more specifically to a method and apparatus for simulating a low-bandwidth connection over a higher-bandwidth connection.
2. Description of Related Art
As computing power and computer memory have become more affordable, local area computer networks (LANs) have largely displaced mainframes and minicomputers as a business platform. Further, large and dispersed public networks such as the Internet have been created and expanded throughout the world. While computers that are directly connected to the Internet or a LAN receive data at a high speed through a high-bandwidth connection, the typical home computer receives data at a much lower speed through a low-bandwidth connection. For example, while a LAN can currently transfer data to a directly connected client computer at 16 Mbps, the expense of such connections effectively limits home computers to a transfer speed of 128 kbps through an ISDN line and the vast majority of home computers connect through a modem at rates such as 56 kbps and 28.8 kbps.
Programmers that develop network centric software for use by home computer users typically work on high speed LANs to boost productivity. However, many of the home users targeted by the software have network connections in the 28.8 kbps range, as explained above. Thus, a common problem for the network program developers is a failure to be able to properly simulate the experience the end user has when using the software over the network. In particular, while the developers understand that a 28.8 kbps connection speed is generally adequate for surfing the Internet and running Java applets, the network centric code that is developed is seldom tested by the developer in the user's 28.8 kbps environment. Therefore, the developers never actually experience their software from the viewpoint of a typical user.
This common situation has lead to many problems. First, programs that work quite well on LANs sometimes fail entirely when accessed over a low speed connection. For example, large applets can take so long to load that the user thinks the browser has crashed and closes the browser window. Likewise, with a point and click graphical user interface (GUI), if the actual connection speed is not properly accounted for the end user can get out of sync with what the GUI is doing. If the user clicks on an icon and nothing happens in a short time, he assumes the program has stopped responding. Further, an animation that looks normal at the developer's LAN connection speed can be difficult to recognize and understand at the user's modem speeds.
One way for a developer to experience the user's viewpoint is to use another computer that is connected to the network through an actual modem. However, this is seldom done primarily due to the fact that it is often impractical for security and hardware reasons to provide telephone or other low speed connections to the developer's LANs. In a work environment, additional hardware and analog phone lines can be difficult for the developer to obtain. Further, allowing phone line access can expose the developer's LAN to access by ill-intentioned third parties.